import React from "react";

export function getCurrentCity () {
  const localCity = JSON.parse(localStorage.getItem("hkzf_city")); // 获取到的是JSON格式的字符串，需要转化为JS对象
  // 这里为了整个函数返回值的统一性，此处也使用Promise。不过由于该操作是肯定会成功的，只需要直接执行Promise.resolve即可。
  if ( localCity ) return Promise.resolve ( localCity );

  // 由于以下的操作都是异步请求，如果直接返回有可能会返回空值，所以这里使用Promise来执行
  return new Promise((resolve,reject) => {
    // 通过IP定位获取到当前城市名称。
    const curCity = new window.BMap.LocalCity();
    curCity.get(async (local) => {
      try {
        // 调用接口获取城市信息
        const { data: res } = await React.$http.get(`area/info`, {
          // 这里通过接口获得的数据与定位的城市不符，是因为接口只做了北上广深的四个地方的数据，如果不在这四个地方，默认返回上海。
          params: {
            name: local.name,
          },
        });
        if (res.status !== 200) console.error("获取当前城市数据失败，请重试!");
        // 获取成功后将数据保存到本地存储中，存储的数据需要是字符串格式
        localStorage.setItem("hkzf_city", JSON.stringify(res.body));
        resolve(res.body);
      } catch (e) {
        reject(e);
      }
    });
  })
}

